package com.zmn.oms.zmn.business.interfaces.redistribute;

import com.zmn.oms.common.dto.OrderWorkRedistributeOperator;
import com.zmn.oms.common.exception.OmsBaseException;
import com.zmn.oms.model.bo.work.redistribute.OrderWorkRedistributeApplyBO;
import com.zmn.oms.model.bo.work.redistribute.OrderWorkRedistributeModifyBO;
import com.zmn.oms.model.entity.redistribute.OrderWorkRedistributeApply;

/**
 * 类描述: 工单改派申请业务实现接口
 *
 * @author: HuangChao
 * @since: 2022/05/09 14:00
 */
public interface OrderWorkRedistributeApplyBService {

    /**
     * 添加工单改派申请
     * @param redistributeApplyBO
     */
    OrderWorkRedistributeApply addOrderWorkRedistributeApply(OrderWorkRedistributeApplyBO redistributeApplyBO) throws OmsBaseException;

    /**
     * 取消改派申请
     * @param cancelBO
     */
    void cancelRedistributeApply(OrderWorkRedistributeModifyBO cancelBO) throws OmsBaseException;

    /**
     * 接受转单求助
     * @param takeBO
     */
    void redistributeTake(OrderWorkRedistributeModifyBO takeBO);

    /**
     * 求助超时
     * @param modifyBO
     */
    OrderWorkRedistributeApply redistributeHelpTimeout(OrderWorkRedistributeModifyBO modifyBO) throws OmsBaseException;

    /**
     * 系统自动重派-首次领单超时
     * @param applyBO
     */
    OrderWorkRedistributeApply autoRedistributeApply(OrderWorkRedistributeApplyBO applyBO) throws OmsBaseException;

    /**
     * 系统自动取消改派申请
     */
    void autoCancelRedistributeApply(OrderWorkRedistributeOperator orderWorkRedistributeOperator) throws OmsBaseException;

}